////////////////////////////////////////////////////////////////////////////////
//
//  FLEX USER GROUP HOKURIKU
//  Copyright 2009 Flex User Group Hokuriku
//  All Rights Reserved.
// 
//  NOTICE: Flex User Group Hokuriku permits you to use, 
//  modify, and distribute this file 
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////
package net.fxug.hokuriku.chocolat.service
{

    /**
     * VoteManagerによって管理される投票機能の実装を持つ事を表すインターフェイス。
     * 投票管理機能を実装する場合はかならずこのインターフェイスを実装する必要がある。
     *
     * このクラスのメソッドは、主としてVoteManager内部から呼び出される事が前提になっているため、
     * 単体テストなどで、独自に起動を行う場合はVoteManagerの状態を考慮する必要があります。
     *
     * @author hikaruworld
     */
    public interface IVoteWatcher
    {
        /**
         * 自身のインターフィエスプロトコルを表す文字列を返す。
         */
        function getInterfaceName():String;
        /**
         * 投票処理機構を起動する。
         */
        function start():void;
        /**
         * 自身の投票処理機構が有効になっている場合にtrueを返す
         */
        function isEnabled():Boolean;
        /**
         * 投票処理機構を終了する。
         */
        function destroy():void;
    }
}